3. Процедура для клиентов работающих по TCP

Когда работающий по TCP клиент хочет соединиться с объектом, доступным только через файрволл, он должен открыть TCP-соединение c соответствующим SOCKS-портом SOCKS-сервера. Сервис SOCKS обычно находится на TCP-порту 1080. Если соединение прошло успешно, клиент начинает переговоры о методе аутентификации, который будет использоваться, проходит аутентификацию по выбранному методу и посылает свой запрос. SOCKS-сервер обрабатывает запрос и либо пытается установить соответствующее соединение, либо отказывает в нем.

Клиент соединяется с сервером и посылает сообщение с номером версии и выбором соответствующего метода аутентификации:

Значение поля VER равно X'05' для данной версии протокола. Поле NMETHODS содержит число октетов в идентификаторах методов авторизации в поле METHODS.

Сервер выбирает один из предложенных методов, перечисленных в METHODS, и посылает ответ о выбранном методе:

Если выбранный метод в METHOD равен X'FF', то ни один из предложенных клиентом методов не применим и клиент должен закрыть соединение.

Эти значения определены для поля METHOD:

          o  X'00' аутентификация не требуется
          o  X'01' GSSAPI
          o  X'02' USERNAME/PASSWORD (см. RFC1929)
          o  X'03' до X'7F' зарезервировано IANA 
          o  X'80' до X'FE' предназначено для частных методов
          o  X'FF' нет применимых методов

Затем клиент и сервер начинают аутентификацию согласно выбранному методу. Описание методов аутентификации находится в отдельных документах.

Разработчики новых методов аутентификации применимых для этого протокола должны обращаться в IANA для получения номера метода. Документ с выделенными номерами должен дополнить текущий список номеров и соответствующих им методов аутентификации.

Совместимые реализации должны поддерживать GSSAPI и могут поддерживать аутентификацию USERNAME/PASSWORD.

Hosted by uCoz